package com.zp.business.service.outpFees;

import com.zp.business.entity.clinicOrder.vo.ClinicOrdersVo;
import com.zp.business.entity.outpFees.bo.FeesParamBo;
import com.zp.business.entity.outpFees.bo.OutpFeesMasterBo;
import com.zp.business.entity.outpFees.vo.OutpFeesMasterVo;
import com.zp.common.myBatis.core.page.PageQuery;
import com.zp.common.myBatis.core.page.TableDataInfo;

import java.util.Collection;
import java.util.List;

/**
 * 门诊收费记录主Service接口
 *
 * @author zhang peng
 * @ date 2024-04-12
 */
public interface IOutpFeesMasterService {

    /**
     * 查询门诊收费记录主
     */
    OutpFeesMasterVo queryById (String outpFeesMasterId);

    /**
     * 查询门诊收费记录主列表(分页)
     */
    TableDataInfo<OutpFeesMasterVo> queryPageList (OutpFeesMasterBo bo, PageQuery pageQuery);

    /**
     * 查询门诊收费记录主列表(不分页)
     */
    List<OutpFeesMasterVo> queryList (OutpFeesMasterBo bo);

    /**
     * 查询门诊退费申请记录
     */
    OutpFeesMasterVo getRefundList (OutpFeesMasterBo bo);

    /**
     * 修改门诊收费记录主
     */
    Boolean insertByBo (FeesParamBo bo);

    /**
     * 修改门诊收费记录主
     */
    Boolean updateByBo (OutpFeesMasterBo bo);

    /**
     * 校验并批量删除门诊收费记录主信息
     */
    Boolean deleteWithValidByIds (Collection<String> ids, Boolean isValid);


    Boolean updateChargeFlag (OutpFeesMasterBo bo);

    /**
     * 修改收费状态 ：3->申请退费
     *
     * @param id   feesNo或applyNo或applyItenId
     * @param type 单个退费和全部退费状态 (单个：single 全部：all)
     * @return
     */
    Boolean refundApplication (String id, String chargeFlag, String type, String orgId, String feesNo);

    /**
     * 确认退费
     *
     * @param bo
     * @return
     */
    Boolean confirmationRefund (FeesParamBo bo);

    List<ClinicOrdersVo> listClinicOrders (OutpFeesMasterBo bo);
}
